home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- *
- *
- * NCSA HDF version 3.2r2
- * October 30, 1992
- *
- * NCSA HDF Version 3.2 source code and documentation are in the public
- * domain. Specifically, we give to the public domain all rights for future
- * licensing of the source code, all resale rights, and all publishing rights.
- *
- * We ask, but do not require, that the following message be included in all
- * derived works:
- *
- * Portions developed at the National Center for Supercomputing Applications at
- * the University of Illinois at Urbana-Champaign, in collaboration with the
- * Information Technology Institute of Singapore.
- *
- * THE UNIVERSITY OF ILLINOIS GIVES NO WARRANTY, EXPRESSED OR IMPLIED, FOR THE
- * SOFTWARE AND/OR DOCUMENTATION PROVIDED, INCLUDING, WITHOUT LIMITATION,
- * WARRANTY OF MERCHANTABILITY AND WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE
- *
- ****************************************************************************
- */
-
- #include <string.h>
- #include "../include/hdf.h"
-
- int32 ret, n, i, j, k, rank=3;
- int32 np=2, /* dimension sizes */
- nr=3,
- nc=4,
- num= 3; /* number of SDGs in notran.hdf */
- char *lpln = "Time", /* luf for planes, rows and cols */
- *upln = "Second",
- *fpln = "Int32",
- *lrow = "Line",
- *urow = "Inch",
- *frow = "Int16",
- *lcol = "Column",
- *ucol = "Cm",
- *fcol = "Int32";
-
- float32 scpln[2]={ 0.0, 100.0}, /* scales for planes, rows, and cols */
- scrow[3]={0.0, 10.0, 20.0},
- sccol[4]={0.0, 1.0, 2.0, 3.0},
- maxi=123.0,
- mini = -1.0;
-
- float32 da[2][3][4]={{{ 0.0, 1.0, 2.0, 3.0}, /* data array in memory */
- { 10.0, 11.0, 12.0, 13.0},
- { 20.0, 21.0, 22.0, 23.0}},
- {{ 100.0, 101.0, 102.0, 103.0},
- { 110.0, 111.0, 112.0, 113.0},
- { 120.0, 121.0, 122.0, 123.0}}};
-
- float32 ida[3][2][3][4], tmpda[4][3][2],iscpln[3][4], iscrow[3][4],
- isccol[3][4], imaxi[3], imini[3];
- char il[3][3][12], iu[3][3][12], ifm[3][3][12];
- int32 di[3]={2,3,4}, /* dims */
- wdi[3], /* windims */
- idi[3][3], tmpdi[3], irank[3];
- int num_err=0, data_err=0;
-
- char *fn="bctest.hdf";
-
-
- main()
-
- {
- int ispre32;
- int32 fid;
-
- fid=Hopen(fn, DFACC_READ,0);
- for (n=0; n<3; n++) {
- ret = DFSDgetdims(fn, &(irank[n]), idi[n], 3);
- num_err += ret;
- ispre32 = DFSDpre32();
- if (ispre32) {
- int nt, n_ntsize, isfortran=0;
-
- printf("SDG%1d was written by old HDF. \n",n);
- if (n != 2) num_err--;
- for (i=0; i<rank; i++)
- tmpdi[i] = idi[n][i]; /* get idi[n] ready for reverse */
- for (i=1; i<=rank; i++) {
- ret = DFSDgetdimstrs(rank-i+1, il[n][i-1], iu[n][i-1], ifm[n][i-1]);
- num_err += ret;
- }
- ret = DFSDgetdimscale(3, tmpdi[2], iscpln[n]);
- num_err += ret;
- ret = DFSDgetdimscale(2, tmpdi[1], iscrow[n]);
- num_err += ret;
- ret = DFSDgetdimscale(1, tmpdi[0], isccol[n]);
- num_err += ret;
- ret = DFSDgetdata(fn, irank[n], tmpdi, tmpda);
- num_err += ret;
- ret = DFSDgetNT(&nt);
- num_err += ret;
- n_ntsize = DFKNTsize(nt | DFNT_NATIVE);
- if (n_ntsize <0) num_err += n_ntsize;
- ret = transar(&rank, tmpdi, idi[n], &n_ntsize, tmpda, ida[n],&isfortran);
- num_err += ret;
- }
- else {
- printf("SDG%1d was written by new HDF. \n",n);
- if (n == 2) num_err--;
- for (i=1; i<=rank; i++) {
- ret = DFSDgetdimstrs(i, il[n][i-1], iu[n][i-1], ifm[n][i-1]);
- num_err += ret;
- }
- ret = DFSDgetdimscale(1, idi[n][0], iscpln[n]);
- num_err += ret;
- ret = DFSDgetdimscale(2, idi[n][1], iscrow[n]);
- num_err += ret;
- ret = DFSDgetdimscale(3, idi[n][2], isccol[n]);
- num_err += ret;
- ret = DFSDgetdata(fn, irank[n], idi[n], ida[n]);
- num_err += ret;
- }
- ret = DFSDgetrange(&(imaxi[n]), &(imini[n]));
- num_err += ret;
- if (irank[n] != rank) data_err++;
- for (i=0;i<rank; i++) {
- if (idi[n][i] != di[i]) data_err++;
- if (imaxi[n] != maxi) data_err++;
- if (imini[n] != mini) data_err++;
- }
- for (i=0;i<np; i++) {
- if (iscpln[n][i] != scpln[i]) data_err++;
- }
- for (i=0; i< nr; i++) {
- if (iscrow[n][i] != scrow[i]) data_err++;
- }
- for (i=0; i<nc; i++) {
- if (isccol[n][i] != sccol[i]) data_err++;
- }
- if (strncmp(il[n][0],lpln,4) != 0) data_err++;
- if (strncmp(il[n][1],lrow,4) != 0) data_err++;
- if (strncmp(il[n][2],lcol,6) != 0) data_err++;
- if (strncmp(iu[n][0],upln,6) != 0) data_err++;
- if (strncmp(iu[n][1],urow,4) != 0) data_err++;
- if (strncmp(iu[n][2],ucol,2) != 0) data_err++;
- if (strncmp(ifm[n][0],fpln,5) != 0) data_err++;
- if (strncmp(ifm[n][1],frow,5) != 0) data_err++;
- if (strncmp(ifm[n][2],fcol,5) != 0) data_err++;
- for (i=0; i<np; i++)
- for (j=0; j<nr; j++)
- for (k=0; k<nc; k++)
- if (da[i][j][k] != ida[n][i][j][k]) data_err++;
- }
-
- /* rslfp = fopen(rslfn, "w");e */
-
- printf(" Orig'l SDG1/C SDG2/F SDG3/F1 \n");
- printf(" rank %3d %3d %3d rank %3d \n",
- rank, irank[0],irank[1],irank[2]);
- printf(" dim1 %3d %3d %3d dim1 %3d \n",
- di[0], idi[0][0],idi[1][0],idi[2][0]);
- printf(" dim2 %3d %3d %3d dim2 %3d \n",
- di[1], idi[0][1],idi[1][1],idi[2][1]);
- printf(" dim3 %3d %3d %3d dim3 %3d \n",
- di[2], idi[0][2],idi[1][2],idi[2][2]);
- printf("dim1_sc1 %6.1f %6.1f %6.1f d1s1 %6.1f \n",
- scpln[0], iscpln[0][0], iscpln[1][0], iscpln[2][0]);
- printf("dim1_sc2 %6.1f %6.1f %6.1f d1s2 %6.1f \n",
- scpln[1], iscpln[0][1], iscpln[1][1], iscpln[2][1]);
- printf("dim2_sc1 %6.1f %6.1f %6.1f d2s1 %6.1f \n",
- scrow[0], iscrow[0][0], iscrow[1][0], iscrow[2][0]);
- printf("dim2_sc2 %6.1f %6.1f %6.1f d2s2 %6.1f \n",
- scrow[1], iscrow[0][1], iscrow[1][1], iscrow[2][1]);
- printf("dim2_sc3 %6.1f %6.1f %6.1f d2s3 %6.1f \n",
- scrow[2], iscrow[0][2], iscrow[1][2], iscrow[2][2]);
- printf("dim3_sc1 %6.1f %6.1f %6.1f d3s1 %6.1f \n",
- sccol[0], isccol[0][0], isccol[1][0], isccol[2][0]);
- printf("dim3_sc2 %6.1f %6.1f %6.1f d3s2 %6.1f \n",
- sccol[1], isccol[0][1], isccol[1][1], isccol[2][1]);
- printf("dim3_sc3 %6.1f %6.1f %6.1f d3s3 %6.1f \n",
- sccol[2], isccol[0][2], isccol[1][2], isccol[2][2]);
- printf("dim3_sc4 %6.1f %6.1f %6.1f d3s4 %6.1f \n",
- sccol[3], isccol[0][3], isccol[1][3], isccol[2][3]);
- printf(" maxi %6.1f %6.1f %6.1f %6.1f \n",
- maxi, imaxi[0], imaxi[1], imaxi[2]);
- printf(" mini %6.1f %6.1f %6.1f %6.1f \n",
- mini, imini[0], imini[1], imini[2]);
- printf(" l_dim1 %7s %6s %6s l_d1 %6.6s \n",
- lpln,il[0][0], il[1][0], il[2][0]);
- printf(" l_dim2 %7s %6s %6s l_d2 %6.6s \n",
- lrow,il[0][1], il[1][1], il[2][1]);
- printf(" l_dim3 %7s %6s %6s l_d3 %6.6s \n",
- lcol,il[0][2], il[1][2], il[2][2]);
- printf(" u_dim1 %7s %6s %6s u_d1 %6.6s \n",
- upln,iu[0][0], iu[1][0], iu[2][0]);
- printf(" u_dim2 %7s %6s %6s u_d2 %6.6s \n",
- urow,iu[0][1], iu[1][1], iu[2][1]);
- printf(" u_dim3 %7s %6s %6s u_d3 %6.6s \n",
- ucol,iu[0][2], iu[1][2], iu[2][2], iu[3][2]);
- printf(" f_dim1 %7s %6s %6s f_d1 %6.6s \n",
- fpln,ifm[0][0], ifm[1][0], ifm[2][0]);
- printf(" f_dim2 %7s %6s %6s f_d2 %6.6s \n",
- frow,ifm[0][1], ifm[1][1], ifm[2][1]);
- printf(" f_dim3 %7s %6s %6s f_d3 %6.6s \n",
- fcol,ifm[0][2], ifm[1][2], ifm[2][2]);
- printf("Data: \n");
- for (i=0;i<np; i++)
- for (j=0; j<nr; j++)
- for (k=0; k<nc; k++) {
- printf("da[i][j][k]%6.1f %6.1f %6.1f ",
- da[i][j][k], ida[0][i][j][k], ida[1][i][j][k]);
- printf(" %6.1f \n", ida[2][i][j][k]);
- }
- printf("\n\n");
- printf(">>>> rs3: %d calls failed. >>>>>\n", abs(num_err));
- printf(">>>> rs3: %d data wrong. >>>>>\n\n\n", data_err);
- exit(num_err);
-
-
- }
-
-